package com.example.sourcecodelearning.proxy.factory;

import lombok.AllArgsConstructor;

import java.lang.reflect.Proxy;

@AllArgsConstructor
public class JdkProxyFactory {

    @SuppressWarnings("unchecked")
    public static <T> T getProxyInstance(Object target) {
        return (T) Proxy.newProxyInstance(
                // 代理类加载器（此处可以是ICEO.class）
                target.getClass().getClassLoader(),
                // 代理的接口（目标类必须实现接口，此处不能是ICEO.class）
                target.getClass().getInterfaces(),
                // 代理处理类
                new JdkProxy(target));
    }

}
